Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

194
Views
Javascript / Node.js] Manejar error para promesa con espera

Escrito a continuación hay un ejemplo de mi código que suelo hacer. lo que hice es..

  1. Agregue try-catch para una función de promesa con async-await.
  2. No agregue try-catch para una función de promesa sin async-await.

Lo que quiero saber es que mi código está bien y es antipatrón o no.

Gracias de antemano.

 const readStatusAll = data => { return new Promise( async (resolve, reject) => { try { const category = await CoreStatus.findAll() resolve(category) } catch(err) { reject(err) } }) } // Promise without Await const readStatusAll = data => { return new Promise( async (resolve, reject) => { CoreStatus.findAll() resolve(category) } }) }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Lo que quiero saber es que mi código está bien y es antipatrón o no.

El primero funcionará correctamente, pero es un antipatrón.

El segundo no funcionará correctamente.

Ninguno de los bloques de código que muestra es la forma recomendada de hacer las cosas porque ambos envuelven innecesariamente una promesa existente en otra promesa creada manualmente. Esto se conoce como antipatrón. Esta primera versión funcionará correctamente, pero contiene un montón de código inútil (lo que lo convierte en un antipatrón) y con un poco más de complejidad en la función, es muy fácil cometer errores de codificación (por lo que, además de el código inútil que contiene, es un anti-patrón).

 const readStatusAll = data => { return new Promise( async (resolve, reject) => { try { const category = await CoreStatus.findAll() resolve(category) } catch(err) { reject(err) } }) }

En cambio, puede ser esto:

 const readStatusAll = data => { return CoreStatus.findAll(); }

La persona que llama recibirá la promesa como valor de retorno y luego puede usar .then() y .catch() o await y try/catch . Dado que no está haciendo nada con el error, aparte de propagarlo, no necesita detectar el error localmente; simplemente puede dejar que se propague de nuevo a la persona que llama.


Su segunda versión simplemente no es correcta en absoluto:

 // Promise without Await const readStatusAll = data => { return new Promise( async (resolve, reject) => { CoreStatus.findAll() resolve(category) } }) }

Debido a que no está prestando atención a ningún retorno asincrónico de CoreStatus.findAll() , resolverá esta promesa de envoltorio manual mucho antes de que se realice la llamada a la base de datos. De hecho, esto ni siquiera es un código legal ya que tiene un refuerzo inadecuado.

Tal vez quiso llamar a resolve(category) en alguna devolución de llamada o controlador .then() asociado con CoreStatus.findAll() . Pero, incluso si hiciera eso, aún no estaría propagando errores a la persona que llama. Esta no es la manera de hacer las cosas.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!